module decode_divh(
//h阵数值
i_h_0,
i_h_1,
i_h_2,
i_h_3,
i_h_4,
i_h_5,
i_h_6,
i_h_7,
//c2vh数据
i_c2vh_0,
i_c2vh_1,
i_c2vh_2,
i_c2vh_3,
i_c2vh_4,
i_c2vh_5,
i_c2vh_6,
i_c2vh_7,
//c2v数据
o_c2v_0,
o_c2v_1,
o_c2v_2,
o_c2v_3,
o_c2v_4,
o_c2v_5,
o_c2v_6,
o_c2v_7
);

//h阵数值
input  [15:0] i_h_0;
input  [15:0] i_h_1;
input  [15:0] i_h_2;
input  [15:0] i_h_3;
input  [15:0] i_h_4;
input  [15:0] i_h_5;
input  [15:0] i_h_6;
input  [15:0] i_h_7;
//c2vh数据
input  [15:0] i_c2vh_0;
input  [15:0] i_c2vh_1;
input  [15:0] i_c2vh_2;
input  [15:0] i_c2vh_3;
input  [15:0] i_c2vh_4;
input  [15:0] i_c2vh_5;
input  [15:0] i_c2vh_6;
input  [15:0] i_c2vh_7;
//c2v数据
output [15:0] o_c2v_0;
output [15:0] o_c2v_1;
output [15:0] o_c2v_2;
output [15:0] o_c2v_3;
output [15:0] o_c2v_4;
output [15:0] o_c2v_5;
output [15:0] o_c2v_6;
output [15:0] o_c2v_7;

//除法表
function [3:0] div;
input [3:0] h;
input [3:0] di;
    case(h)
    4'd1  : begin
        case(di)
        4'd0  : div = 4'd0;
        4'd1  : div = 4'd1;
        4'd2  : div = 4'd2;
        4'd3  : div = 4'd3;
        4'd4  : div = 4'd4;
        4'd5  : div = 4'd5;
        4'd6  : div = 4'd6;
        4'd7  : div = 4'd7;
        4'd8  : div = 4'd8;
        4'd9  : div = 4'd9;
        4'd10 : div = 4'd10;
        4'd11 : div = 4'd11;
        4'd12 : div = 4'd12;
        4'd13 : div = 4'd13;
        4'd14 : div = 4'd14;
        4'd15 : div = 4'd15;
        endcase
    end
    4'd2  : begin
        case(di)
        4'd0  : div = 4'd0;
        4'd1  : div = 4'd9;
        4'd2  : div = 4'd1;
        4'd3  : div = 4'd8;
        4'd4  : div = 4'd2;
        4'd5  : div = 4'd11;
        4'd6  : div = 4'd3;
        4'd7  : div = 4'd10;
        4'd8  : div = 4'd4;
        4'd9  : div = 4'd13;
        4'd10 : div = 4'd5;
        4'd11 : div = 4'd12;
        4'd12 : div = 4'd6;
        4'd13 : div = 4'd15;
        4'd14 : div = 4'd7;
        4'd15 : div = 4'd14;
        endcase
    end
    4'd3  : begin
        case(di)
        4'd0  : div = 4'd0;
        4'd1  : div = 4'd14;
        4'd2  : div = 4'd15;
        4'd3  : div = 4'd1;
        4'd4  : div = 4'd13;
        4'd5  : div = 4'd3;
        4'd6  : div = 4'd2;
        4'd7  : div = 4'd12;
        4'd8  : div = 4'd9;
        4'd9  : div = 4'd7;
        4'd10 : div = 4'd6;
        4'd11 : div = 4'd8;
        4'd12 : div = 4'd4;
        4'd13 : div = 4'd10;
        4'd14 : div = 4'd11;
        4'd15 : div = 4'd5;
        endcase
    end
    4'd4  : begin
        case(di)
        4'd0  : div = 4'd0;
        4'd1  : div = 4'd13;
        4'd2  : div = 4'd9;
        4'd3  : div = 4'd4;
        4'd4  : div = 4'd1;
        4'd5  : div = 4'd12;
        4'd6  : div = 4'd8;
        4'd7  : div = 4'd5;
        4'd8  : div = 4'd2;
        4'd9  : div = 4'd15;
        4'd10 : div = 4'd11;
        4'd11 : div = 4'd6;
        4'd12 : div = 4'd3;
        4'd13 : div = 4'd14;
        4'd14 : div = 4'd10;
        4'd15 : div = 4'd7;
        endcase
    end
    4'd5  : begin
        case(di)
        4'd0  : div = 4'd0;
        4'd1  : div = 4'd11;
        4'd2  : div = 4'd5;
        4'd3  : div = 4'd14;
        4'd4  : div = 4'd10;
        4'd5  : div = 4'd1;
        4'd6  : div = 4'd15;
        4'd7  : div = 4'd4;
        4'd8  : div = 4'd7;
        4'd9  : div = 4'd12;
        4'd10 : div = 4'd2;
        4'd11 : div = 4'd9;
        4'd12 : div = 4'd13;
        4'd13 : div = 4'd6;
        4'd14 : div = 4'd8;
        4'd15 : div = 4'd3;
        endcase
    end
    4'd6  : begin
        case(di)
        4'd0  : div = 4'd0;
        4'd1  : div = 4'd7;
        4'd2  : div = 4'd14;
        4'd3  : div = 4'd9;
        4'd4  : div = 4'd15;
        4'd5  : div = 4'd8;
        4'd6  : div = 4'd1;
        4'd7  : div = 4'd6;
        4'd8  : div = 4'd13;
        4'd9  : div = 4'd10;
        4'd10 : div = 4'd3;
        4'd11 : div = 4'd4;
        4'd12 : div = 4'd2;
        4'd13 : div = 4'd5;
        4'd14 : div = 4'd12;
        4'd15 : div = 4'd11;
        endcase
    end
    4'd7  : begin
        case(di)
        4'd0  : div = 4'd0;
        4'd1  : div = 4'd6;
        4'd2  : div = 4'd12;
        4'd3  : div = 4'd10;
        4'd4  : div = 4'd11;
        4'd5  : div = 4'd13;
        4'd6  : div = 4'd7;
        4'd7  : div = 4'd1;
        4'd8  : div = 4'd5;
        4'd9  : div = 4'd3;
        4'd10 : div = 4'd9;
        4'd11 : div = 4'd15;
        4'd12 : div = 4'd14;
        4'd13 : div = 4'd8;
        4'd14 : div = 4'd2;
        4'd15 : div = 4'd4;
        endcase
    end
    4'd8  : begin
        case(di)
        4'd0  : div = 4'd0;
        4'd1  : div = 4'd15;
        4'd2  : div = 4'd13;
        4'd3  : div = 4'd2;
        4'd4  : div = 4'd9;
        4'd5  : div = 4'd6;
        4'd6  : div = 4'd4;
        4'd7  : div = 4'd11;
        4'd8  : div = 4'd1;
        4'd9  : div = 4'd14;
        4'd10 : div = 4'd12;
        4'd11 : div = 4'd3;
        4'd12 : div = 4'd8;
        4'd13 : div = 4'd7;
        4'd14 : div = 4'd5;
        4'd15 : div = 4'd10;
        endcase
    end
    4'd9  : begin
        case(di)
        4'd0  : div = 4'd0;
        4'd1  : div = 4'd2;
        4'd2  : div = 4'd4;
        4'd3  : div = 4'd6;
        4'd4  : div = 4'd8;
        4'd5  : div = 4'd10;
        4'd6  : div = 4'd12;
        4'd7  : div = 4'd14;
        4'd8  : div = 4'd3;
        4'd9  : div = 4'd1;
        4'd10 : div = 4'd7;
        4'd11 : div = 4'd5;
        4'd12 : div = 4'd11;
        4'd13 : div = 4'd9;
        4'd14 : div = 4'd15;
        4'd15 : div = 4'd13;
        endcase
    end
    4'd10 : begin
        case(di)
        4'd0  : div = 4'd0;
        4'd1  : div = 4'd12;
        4'd2  : div = 4'd11;
        4'd3  : div = 4'd7;
        4'd4  : div = 4'd5;
        4'd5  : div = 4'd9;
        4'd6  : div = 4'd14;
        4'd7  : div = 4'd2;
        4'd8  : div = 4'd10;
        4'd9  : div = 4'd6;
        4'd10 : div = 4'd1;
        4'd11 : div = 4'd13;
        4'd12 : div = 4'd15;
        4'd13 : div = 4'd3;
        4'd14 : div = 4'd4;
        4'd15 : div = 4'd8;
        endcase
    end
    4'd11 : begin
        case(di)
        4'd0  : div = 4'd0;
        4'd1  : div = 4'd5;
        4'd2  : div = 4'd10;
        4'd3  : div = 4'd15;
        4'd4  : div = 4'd7;
        4'd5  : div = 4'd2;
        4'd6  : div = 4'd13;
        4'd7  : div = 4'd8;
        4'd8  : div = 4'd14;
        4'd9  : div = 4'd11;
        4'd10 : div = 4'd4;
        4'd11 : div = 4'd1;
        4'd12 : div = 4'd9;
        4'd13 : div = 4'd12;
        4'd14 : div = 4'd3;
        4'd15 : div = 4'd6;
        endcase
    end
    4'd12 : begin
        case(di)
        4'd0  : div = 4'd0;
        4'd1  : div = 4'd10;
        4'd2  : div = 4'd7;
        4'd3  : div = 4'd13;
        4'd4  : div = 4'd14;
        4'd5  : div = 4'd4;
        4'd6  : div = 4'd9;
        4'd7  : div = 4'd3;
        4'd8  : div = 4'd15;
        4'd9  : div = 4'd5;
        4'd10 : div = 4'd8;
        4'd11 : div = 4'd2;
        4'd12 : div = 4'd1;
        4'd13 : div = 4'd11;
        4'd14 : div = 4'd6;
        4'd15 : div = 4'd12;
        endcase
    end
    4'd13 : begin
        case(di)
        4'd0  : div = 4'd0;
        4'd1  : div = 4'd4;
        4'd2  : div = 4'd8;
        4'd3  : div = 4'd12;
        4'd4  : div = 4'd3;
        4'd5  : div = 4'd7;
        4'd6  : div = 4'd11;
        4'd7  : div = 4'd15;
        4'd8  : div = 4'd6;
        4'd9  : div = 4'd2;
        4'd10 : div = 4'd14;
        4'd11 : div = 4'd10;
        4'd12 : div = 4'd5;
        4'd13 : div = 4'd1;
        4'd14 : div = 4'd13;
        4'd15 : div = 4'd9;
        endcase
    end
    4'd14 : begin
        case(di)
        4'd0  : div = 4'd0;
        4'd1  : div = 4'd3;
        4'd2  : div = 4'd6;
        4'd3  : div = 4'd5;
        4'd4  : div = 4'd12;
        4'd5  : div = 4'd15;
        4'd6  : div = 4'd10;
        4'd7  : div = 4'd9;
        4'd8  : div = 4'd11;
        4'd9  : div = 4'd8;
        4'd10 : div = 4'd13;
        4'd11 : div = 4'd14;
        4'd12 : div = 4'd7;
        4'd13 : div = 4'd4;
        4'd14 : div = 4'd1;
        4'd15 : div = 4'd2;
        endcase
    end
    4'd15 : begin
        case(di)
        4'd0  : div = 4'd0;
        4'd1  : div = 4'd8;
        4'd2  : div = 4'd3;
        4'd3  : div = 4'd11;
        4'd4  : div = 4'd6;
        4'd5  : div = 4'd14;
        4'd6  : div = 4'd5;
        4'd7  : div = 4'd13;
        4'd8  : div = 4'd12;
        4'd9  : div = 4'd4;
        4'd10 : div = 4'd15;
        4'd11 : div = 4'd7;
        4'd12 : div = 4'd10;
        4'd13 : div = 4'd2;
        4'd14 : div = 4'd9;
        4'd15 : div = 4'd1;
        endcase
    end
    endcase
endfunction

assign o_c2v_0 = {div(i_h_0[15:12],i_c2vh_0[15:12]),div(i_h_0[11:8],i_c2vh_0[11:8]),div(i_h_0[7:4],i_c2vh_0[7:4]),div(i_h_0[3:0],i_c2vh_0[3:0])};
assign o_c2v_1 = {div(i_h_1[15:12],i_c2vh_1[15:12]),div(i_h_1[11:8],i_c2vh_1[11:8]),div(i_h_1[7:4],i_c2vh_1[7:4]),div(i_h_1[3:0],i_c2vh_1[3:0])};
assign o_c2v_2 = {div(i_h_2[15:12],i_c2vh_2[15:12]),div(i_h_2[11:8],i_c2vh_2[11:8]),div(i_h_2[7:4],i_c2vh_2[7:4]),div(i_h_2[3:0],i_c2vh_2[3:0])};
assign o_c2v_3 = {div(i_h_3[15:12],i_c2vh_3[15:12]),div(i_h_3[11:8],i_c2vh_3[11:8]),div(i_h_3[7:4],i_c2vh_3[7:4]),div(i_h_3[3:0],i_c2vh_3[3:0])};
assign o_c2v_4 = {div(i_h_4[15:12],i_c2vh_4[15:12]),div(i_h_4[11:8],i_c2vh_4[11:8]),div(i_h_4[7:4],i_c2vh_4[7:4]),div(i_h_4[3:0],i_c2vh_4[3:0])};
assign o_c2v_5 = {div(i_h_5[15:12],i_c2vh_5[15:12]),div(i_h_5[11:8],i_c2vh_5[11:8]),div(i_h_5[7:4],i_c2vh_5[7:4]),div(i_h_5[3:0],i_c2vh_5[3:0])};
assign o_c2v_6 = {div(i_h_6[15:12],i_c2vh_6[15:12]),div(i_h_6[11:8],i_c2vh_6[11:8]),div(i_h_6[7:4],i_c2vh_6[7:4]),div(i_h_6[3:0],i_c2vh_6[3:0])};
assign o_c2v_7 = {div(i_h_7[15:12],i_c2vh_7[15:12]),div(i_h_7[11:8],i_c2vh_7[11:8]),div(i_h_7[7:4],i_c2vh_7[7:4]),div(i_h_7[3:0],i_c2vh_7[3:0])};

endmodule

